#ifndef CAMERA_H
#define CAMERA_H

#include <QPointF>
#include <QPainter>
class Camera
{
public:
    Camera();

    const QPointF& pos() const{return _pos;}
    const float& scale() const {return _scale;}
    const float& rotation() const{return _rotation;}

    void updateBackgroundSize(const QSize& backgroundSize);

    void updateWindowSize(const QSize& window);
    void updatePosition(const QPointF& pos);
    void updateScale(float scale);
    void updateRotation(float rotation);
    void update(const QPointF& pos, float scale, float rotation, const QSize& window);
    void setCamera(QPainter& painter); // 设置painter到相机位置

    void toCenter();
    QPointF windowToGlobal(const QPointF &windowPos) const;
    QPointF globalToWindow(const QPointF &globalPos) const;
private:
    QPointF _pos; // 位置
    float _scale; // 缩放
    float _rotation; // 旋转角

    QSize _window; // 窗口大小(视线范围
    QSize _background; // 背景大小(世界坐标
};

#endif // CAMERA_H
